package com.sxj.corejava.code07_面向对象;


/**
 * @author 石小俊
 * 2024年07月15日 9:16
 */
public class Test07_构造方法 {

    public static void main(String[] args) {
        User user = new User();
        System.out.println("username:" + user.username + ",password:" + user.password);
        User user2 = new User("admin", "123456");
        System.out.println("username:" + user2.username + ",password:" + user2.password);
        User user3 = new User(3, "alice", "111111");
        System.out.println("id:" + user3.id + ",username:" + user3.username + ",password:" + user3.password);
    }

}

class User {
    int id;
    String username;
    String password;

    public User() {

    }

    /**
     * 有参构造方法,当类中定义了有参构造方法之后,默认的无参构造方法将会被覆盖
     * 即:当类中定义了有参构造方法,则原本默认存在的无参将会消失
     * @param username
     * @param password
     */
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User(int id){
        this.id = id;
    }

    public User(int id, String username, String password) {
        // 可以通过this(参数列表)调用其他构造方法
        // 此时调用其他构造方法相当于将另一个构造方法的方法体内容复制到此处
        // this()语句必须处于代码的第一行,且只能调用一次
        this(username, password);
        this.id = id;
        //this.username = username;
        //this.password = password;
    }
}
